package xdu.lz.stage2_design_pattern.chapter3_observer_pattern.observerApp1;

import java.util.ArrayList;
import java.util.List;

//主题
public class Subject {

    //维护所有观察者
    private List<Observer> observers = new ArrayList<>();

    //主题状态，被观察者所关心，一旦变化主动通知所有观察者
    private int state;

    public int getState() {
        return this.state;
    }
    public void setState(int state){
        if(this.state == state){
            return;
        }
        this.state = state;
        //一旦变化主动通知所有观察者
        notifyAllObservers();
    }
    //观察者订阅主题：把观察者添加到订阅集合中
    public void attach(Observer observer){
        observers.add(observer);

    }
    //通知集合中的观察者，调用他们的API
    private void notifyAllObservers(){
        observers.stream().forEach(Observer::update);
    }
}
